%!TEX root = /Users/dejean/Documents/ITU/2aar/MAIG-E2011/exam_project/report/simmar_report.tex
\section{Introduction}\label{introduction}
Mario makes for an interesting case for implementation of advanced AI. The freedom of movement and multitude of enemies makes for an enormous state space. For any AI agent, this requires the ability to abstract a large number of situations into a single set of inputs that will still result in an appropriate action to all of them.

In this project we're using the Mario AI framework \cite{mario_ai}, which is an open source implementation of Mario in java with a wide array of options for implementing custom AI agents to control the player character with.

Multiple measures of performance such as level progress, defeating enemies, collection of coins and other power-ups also provide many interesting avenues of behavior to aim the agent toward.

We have chosen to implement two different advanced AI methods and test how they perform when given a set of simple inputs to act on. One agent is based on NeuroEvolution of Augmenting Topologies (NEAT) while the other uses Accuracy-Based Classifier Systems (XCS).

In NEAT, the knowledge comes from an artificial neural network, evolved both in connection weighting and topology by a genetic algorithm. In XCS, rules consisting of binary conditions are found through reinforcement as well as evolvement with a genetic algorithm.

In this report, we first cover related work, then describe the two approaches in more detail, followed by a performance measurement and finally a discussion on the results.